package dao.generico;

import java.util.List;

import dao.util.HibernateUtil;

import negocio.controlador.ControladorConfiguracao;


public class DAOGenerico<T> implements IDAOGenerico<T> {
	
	
	@Override
	public void inserir(T pObjeto) {
		try {
			HibernateUtil.getSession().save(pObjeto);
		} catch (Exception e) {
			HibernateUtil.rollbackTransaction();
			throw new RuntimeException("Erro ao tentar incluir Configuracao", e);
		}

	}

	@Override
	public void alterar(T pObjeto) {
		try {
			HibernateUtil.getSession().update(pObjeto);
		} catch (Exception e) {
			HibernateUtil.rollbackTransaction();
			throw new RuntimeException("Erro ao tentar alterar Configuracao", e);
		}

	}

	@Override
	public void excluir(T pObjeto) {
		try {
			HibernateUtil.getSession().delete(pObjeto);
		} catch (Exception e) {
			HibernateUtil.rollbackTransaction();
			throw new RuntimeException("Erro ao tentar Remover Configuracao",e);
		}
	}

	@SuppressWarnings("unchecked")
	@Override
	public List<T> listar() {
		List<T> retorno;
		try {
			retorno = HibernateUtil.getSession().createCriteria(getClass()).list();
		} catch (Exception e) {
			HibernateUtil.rollbackTransaction();
			throw new RuntimeException(
					"Erro ao tentar Consultar Configuracao por chave Primaria",e);
		}
		return retorno;
	}

	@SuppressWarnings("unchecked")
	@Override
	public T consultarPorChavePrimaria(int id) {
		T entity;
		try {
			entity = (T) HibernateUtil.getSession().get(getClass(),	id);
			return entity;
		} catch (Exception e) {
			HibernateUtil.rollbackTransaction();
			throw new RuntimeException("Erro ao tentar Consultar Configuracao por chave Primaria",e);
		}
	}

}
